#include <iostream>
#include <cmath>

inline long long Gcd(const long long a, const long long b) {
	if (b == 0) {
		return a;
	}
	return Gcd(b, a % b);
}


/**
 * 
 * NOIP2001 最大公约数最小公倍数
 */
int main() {
	std::ios::sync_with_stdio(false);
	std::cin.tie(nullptr);

	long long x0, y0;
	std::cin >> x0 >> y0;

	if(x0==y0) {
		std::cout << 1;
		return 0;
	}

	long long d = x0 * y0;
	long long middle = static_cast<long long>(std::sqrt(d));

	int cnt = 0;
	for(long long P=x0; P<=middle; P++) {
		for(long long Q=middle; Q<=y0; Q++) {
			if(P*Q == d ) {
				long long gcdPQ = Gcd(P, Q);
				if (gcdPQ == x0 && P*Q/gcdPQ == y0) {
					cnt++;
				}
			}
		}
	}

	std::cout << cnt*2;

	return 0;
}